from django.shortcuts import render

# Create your views here.
from areas.models import Area
from areas.serializers import AreaInfoSerializer, SubAreaInfoSerializer

"""
查询所有的省份
url  areas/infos


查询所有的市区县
url  areas/infos/pk

"""

from rest_framework.viewsets import ReadOnlyModelViewSet
from rest_framework_extensions.cache.mixins import CacheResponseMixin


class AreaInfoViewSet(CacheResponseMixin, ReadOnlyModelViewSet):
    """
    定义视图集
    查询所有的省份　　list
    查询所有的市区县　retrieve
    """
    #  如果在setting里面设置了分页信息，那么表示所有的有分页的都用该分页方式，所以需要设置分页属性
    pagination_class = None

    #  list方法用不到所有的结果集　所有需要进行判断，返回不同的结果集
    # queryset = Area.objects.all()
    def get_queryset(self):
        if self.action == 'list':
            #  action表示被装饰的方法
            return Area.objects.filter(parent_id__isnull=True)
        else:
            return Area.objects.all()

    # serializer_class = AreaInfoSerializer
    #  retrieve方法用到不同的序列化器　市区县的查询需要用到parent_id,所有定义两个序列化器，使用自关联查询
    def get_serializer_class(self):
        if self.action == 'list':
            return AreaInfoSerializer
        else:
            return SubAreaInfoSerializer
